package com.sheng.leetcode.year2023.month09.day20;

import org.junit.Test;

/**
 * @author by ls
 * @date 2023/9/20
 * <p>
 * LCP 06. 拿硬币<p>
 * <p>
 * 桌上有 n 堆力扣币，每堆的数量保存在数组 coins 中。我们每次可以选择任意一堆，拿走其中的一枚或者两枚，求拿完所有力扣币的最少次数。<p>
 * <p>
 * 示例 1：<p>
 * 输入：[4,2,1]<p>
 * 输出：4<p>
 * 解释：第一堆力扣币最少需要拿 2 次，第二堆最少需要拿 1 次，第三堆最少需要拿 1 次，总共 4 次即可拿完。<p>
 * <p>
 * 示例 2：<p>
 * 输入：[2,3,10]<p>
 * 输出：8<p>
 * <p>
 * 限制：<p>
 * 1 <= n <= 4<p>
 * 1 <= coins[i] <= 10<p>
 */
public class LCP06 {

    @Test
    public void test01() {
//        int[] coins = {4, 2, 1};
        int[] coins = {2, 3, 10};
        System.out.println(new Solution().minCount(coins));
    }
}

class Solution {
    public int minCount(int[] coins) {
        int ans = 0;
        for (int coin : coins) {
            ans += coin / 2 + coin % 2;
        }
        return ans;
    }
}
